package com.denlaku.longan.dao;

import com.denlaku.longan.anno.VarOp;
import com.denlaku.longan.qo.Query;
import com.denlaku.longan.vo.Component;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author tianx
 */
@Repository
public interface ComponentDao {
    /**
     * 保存组件
     * @param component 组件信息
     * @return 保存数据行数
     */
    @VarOp
    Integer add(Component component);

    /**
     * 批量保存组件
     *
     * @param componentList 组件列表
     */
    @VarOp
    void batchAdd(List<Component> componentList);

    /**
     * 删除组件
     * @param tenantId 租户ID
     * @param dashboardId 仪表板ID
     */
    void delete(@Param("tenantId") Long tenantId, @Param("dashboardId") Long dashboardId);

    /**
     * 根据ID获取组件
     * @param query 查询参数
     * @return 组件
     */
    Component get(Query query);

    /**
     * 根据仪表板ID查询组件列表
     * @param tenantId 租户ID
     * @param dashboardId 仪表板ID
     * @return 组件列表
     */
    List<Component> list(@Param("tenantId") Long tenantId, @Param("dashboardId") Long dashboardId);

    /**
     * 根据仪表板ID查询组件ID列表
     *
     * @param tenantId 租户ID
     * @param dashboardId 仪表板ID
     * @return 组件ID列表
     */
    List<Long> listComponentIds(@Param("tenantId") Long tenantId, @Param("dashboardId") Long dashboardId);
}
